const inquirerPromise = import("inquirer");
const download = require("download-git-repo");
const ora = require("ora");
const config = require("../../config");

const myAction = async (project, args) => {
  const inquirer = await inquirerPromise;
  const prompt = inquirer.default.prompt;
  const questions = [
    {
      // 数组中每一个对象表示一个问题
      type: "list", // 问题类型，list表示选择列表
      name: "framework", // 用于接收答案的键值
      choices: config.framework, // 选项, // 选项
      message: "请选择你所使用的框架", // 问题
    },
  ];
  const answers = await prompt(questions);
  // 下载代码模板
  const spinner = ora().start(); // 创建实例并启动加载指示器
  spinner.text = "代码正在下载……"; // 下载过程中在命令行展示的 loading 信息
  download(
    `direct:${config.frameworkUrls[answers.framework]}`,
    project,
    { clone: true },
    (err) => {
      if (!err) {
        spinner.succeed("代码下载成功");
        // 下载成功后，提示使用者j接下来可执行的操作
        console.log("Done! you run:");
        console.log("cd " + project);
        console.log("npm install ");
        console.log("npm run dev ");
      } else {
        spinner.fail("代码下载失败");
      }
    }
  );
};

module.exports = myAction;
